﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;
using System.Data;

namespace System
{
    ///// <summary>
    ///// 功能描述：DoExportHandler (导入操作的AJAX提交的处理类)
    ///// 创建时间：2010-11-11 13:06:49
    ///// 创 建 人：李飞飞
    ///// </summary>
    ///// <typeparam name="OutT">转换出的类型</typeparam>
    //public static class SafeConvert<OutT>
    //{
    //    #region by 李飞飞

    //    /// <summary>
    //    /// 泛型数据类型转换
    //    /// </summary>
    //    /// <typeparam name="T">自定义数据类型</typeparam>
    //    /// <param name="value">传入需要转换的值</param>
    //    /// <param name="defaultValue">默认值</param>
    //    /// <returns></returns>
    //    public static OutT ConvertType(object value, OutT defaultValue)
    //    {
    //        return (OutT)ConvertToT(value, defaultValue);
    //    }

    //    /// <summary>
    //    /// 转换数据类型
    //    /// </summary>
    //    /// <typeparam name="T">自定义数据类型</typeparam>
    //    /// <param name="myvalue">传入需要转换的值</param>
    //    /// <param name="defaultValue">默认值</param>
    //    /// <returns></returns>
    //    private static object ConvertToT(object myvalue, OutT defaultValue)
    //    {
    //        if (myvalue == null)
    //            return defaultValue;
    //        TypeCode typeCode = System.Type.GetTypeCode(typeof(OutT));

    //        string value = myvalue.ToString();

    //        switch (typeCode)
    //        {
    //            case TypeCode.Boolean:
    //                bool flag = false;
    //                if (bool.TryParse(value, out flag))
    //                    return flag;
    //                return defaultValue;
    //            case TypeCode.Char:
    //                char c;
    //                if (Char.TryParse(value, out c))
    //                    return c;
    //                return defaultValue;
    //            case TypeCode.SByte:
    //                sbyte s = 0;
    //                if (SByte.TryParse(value, out s))
    //                    return s;
    //                return defaultValue;
    //            case TypeCode.Byte:
    //                byte b = 0;
    //                if (Byte.TryParse(value, out b))
    //                    return b;
    //                return defaultValue;
    //            case TypeCode.Int16:
    //                Int16 i16 = 0;
    //                if (Int16.TryParse(value, out i16))
    //                    return i16;
    //                return defaultValue;
    //            case TypeCode.UInt16:
    //                UInt16 ui16 = 0;
    //                if (UInt16.TryParse(value, out ui16))
    //                    return ui16;
    //                return defaultValue;
    //            case TypeCode.Int32:
    //                int i = 0;
    //                if (Int32.TryParse(value, out i))
    //                    return i;
    //                return defaultValue;
    //            case TypeCode.UInt32:
    //                UInt32 ui32 = 0;
    //                if (UInt32.TryParse(value, out ui32))
    //                    return ui32;
    //                return defaultValue;
    //            case TypeCode.Int64:
    //                Int64 i64 = 0;
    //                if (Int64.TryParse(value, out i64))
    //                    return i64;
    //                return defaultValue;
    //            case TypeCode.UInt64:
    //                UInt64 ui64 = 0;
    //                if (UInt64.TryParse(value, out ui64))
    //                    return ui64;
    //                return defaultValue;
    //            case TypeCode.Single:
    //                Single single = 0;
    //                if (Single.TryParse(value, out single))
    //                    return single;
    //                return defaultValue;
    //            case TypeCode.Double:
    //                double d = 0;
    //                if (Double.TryParse(value, out d))
    //                    return d;
    //                return defaultValue;
    //            case TypeCode.Decimal:
    //                decimal de = 0;
    //                if (Decimal.TryParse(value, out de))
    //                    return de;
    //                return defaultValue;
    //            case TypeCode.DateTime:
    //                DateTime dt;
    //                if (DateTime.TryParse(value, out dt))
    //                    return dt;
    //                return defaultValue;
    //            case TypeCode.String:
    //                if (value.Length == 0)
    //                    return defaultValue;
    //                return value.ToString();
    //        }

    //        throw new ArgumentNullException("defaultValue", "不能为Empty,Object,DBNull");



    //    }



    //    /// <summary>
    //    /// SqlDbType转换为C#数据类型
    //    /// </summary>
    //    /// <param name="sqlType"></param>
    //    /// <returns></returns>
    //    public static Type SqlType2CsharpType(SqlDbType sqlType)
    //    {
    //        switch (sqlType)
    //        {
    //            case SqlDbType.BigInt:
    //                return typeof(Int64);
    //            case SqlDbType.Binary:
    //                return typeof(Object);
    //            case SqlDbType.Bit:
    //                return typeof(Boolean);
    //            case SqlDbType.Char:
    //                return typeof(String);
    //            case SqlDbType.DateTime:
    //                return typeof(DateTime);
    //            case SqlDbType.Decimal:
    //                return typeof(Decimal);
    //            case SqlDbType.Float:
    //                return typeof(Double);
    //            case SqlDbType.Image:
    //                return typeof(Object);
    //            case SqlDbType.Int:
    //                return typeof(Int32);
    //            case SqlDbType.Money:
    //                return typeof(Decimal);
    //            case SqlDbType.NChar:
    //                return typeof(String);
    //            case SqlDbType.NText:
    //                return typeof(String);
    //            case SqlDbType.NVarChar:
    //                return typeof(String);
    //            case SqlDbType.Real:
    //                return typeof(Single);
    //            case SqlDbType.SmallDateTime:
    //                return typeof(DateTime);
    //            case SqlDbType.SmallInt:
    //                return typeof(Int16);
    //            case SqlDbType.SmallMoney:
    //                return typeof(Decimal);
    //            case SqlDbType.Text:
    //                return typeof(String);
    //            case SqlDbType.Timestamp:
    //                return typeof(Object);
    //            case SqlDbType.TinyInt:
    //                return typeof(Byte);
    //            case SqlDbType.Udt://自定义的数据类型
    //                return typeof(Object);
    //            case SqlDbType.UniqueIdentifier:
    //                return typeof(Object);
    //            case SqlDbType.VarBinary:
    //                return typeof(Object);
    //            case SqlDbType.VarChar:
    //                return typeof(String);
    //            case SqlDbType.Variant:
    //                return typeof(Object);
    //            case SqlDbType.Xml:
    //                return typeof(Object);
    //            default:
    //                return null;
    //        }
    //    } 

    //    #endregion
    //}
}
